using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using Iesi.Collections.Generic;
using METODESA.Server.Data.METODESA.Entity;
using METODESA.Server.Data.METODESA.Nhibernate;

namespace Metodesa.Tools
{
    public class ComprasTools
    {
        public static HtmlTable ListCompra(IList<OrdenCompra> lCompras)
        {
            HtmlTable table = new HtmlTable();
            #region lcompras have items

            if (lCompras != null && lCompras.Count != 0)
            {
                HtmlTableRow r = new HtmlTableRow();
                HtmlTableCell details = new HtmlTableCell();
                HtmlTableCell edit = new HtmlTableCell();
                HtmlTableCell id = new HtmlTableCell();
                HtmlTableCell monto = new HtmlTableCell();
                HtmlTableCell proveedorName = new HtmlTableCell();
                HtmlTableCell fecha = new HtmlTableCell();
                HtmlTableCell empleadoName = new HtmlTableCell();



                edit.BorderColor=details.BorderColor = id.BorderColor = monto.BorderColor
                                           = proveedorName.BorderColor = fecha.BorderColor = "#FFFFFF";
                edit.BgColor=id.BgColor = monto.BgColor = proveedorName.BgColor = fecha.BgColor =
                                               details.BgColor = empleadoName.BgColor = "#a9a9a9";
               
                
                details.Controls.Add(new LiteralControl(""));
                edit.Controls.Add(new LiteralControl("      "));
                id.Controls.Add(new LiteralControl("<b>id</b>"));
                proveedorName.Controls.Add(new LiteralControl("<b>Proveedor </b>"));
                fecha.Controls.Add(new LiteralControl("<b>Fecha</b>"));
                empleadoName.Controls.Add(new LiteralControl("<b>Empleado</b>"));
                monto.Controls.Add(new LiteralControl("<b>total</b>"));
                r.Cells.Add(details);
                r.Cells.Add(edit);
                r.Cells.Add(id);
                r.Cells.Add(proveedorName);
                r.Cells.Add(fecha);
                r.Cells.Add(empleadoName);
                r.Cells.Add(monto);
                
                table.Rows.Add(r);
                int i = 0;
                foreach (OrdenCompra compra in lCompras)
                {
                    i++;
                    bool cerrada = compra.Estado == 1;

                    edit =new HtmlTableCell();
                    details = new HtmlTableCell();
                    r = new HtmlTableRow();
                    id = new HtmlTableCell();
                    proveedorName=new HtmlTableCell();
                    fecha = new HtmlTableCell();
                    empleadoName = new HtmlTableCell();
                    monto = new HtmlTableCell();
                    id.BorderColor  = fecha.BorderColor = "#FFFFFF";


                    if (i % 2 == 0)
                    {
                        proveedorName.BgColor= details.BgColor  = id.BgColor = monto.BgColor =  
                            edit.BgColor=empleadoName.BgColor = fecha.BgColor = "#E0E9F5";
                    }
                    else
                    {
                        proveedorName.BgColor = details.BgColor = id.BgColor = monto.BgColor =
                            edit.BgColor= empleadoName.BgColor = fecha.BgColor = "#D3D3D3";
                    }


                    id.Controls.Add(new LiteralControl(compra.Id + ""));
                    proveedorName.Controls.Add(new LiteralControl(compra.Proveedor.Nombre));
                    fecha.Controls.Add(new LiteralControl(compra.Fecha));
                    monto.Controls.Add(new LiteralControl(compra.Monto.ToString()));
                    empleadoName.Controls.Add(new LiteralControl(compra.Empleado.Nombre+" "+compra.Empleado.Apellido));
                    

                    HyperLink linkDetails = new HyperLink();
                    linkDetails.Text = "Detalle";
                    linkDetails.NavigateUrl = "DetailsCompra.aspx?id=" + compra.Id;
                    details.Controls.Add(linkDetails);

                    HyperLink link = new HyperLink();
                    link.Text = "Editar";
                    link.NavigateUrl = "ListCompra.aspx?a=s&id=" + compra.Id;
                    if(!cerrada)
                    edit.Controls.Add(link);
                    else
                        edit.Controls.Add(new LiteralControl("      "));

                    r.Cells.Add(details);

                    r.Cells.Add(edit);
                    r.Cells.Add(id);
                    r.Cells.Add(proveedorName);
                    r.Cells.Add(fecha);
                    r.Cells.Add(empleadoName);
                    r.Cells.Add(monto);
                    table.Rows.Add(r);

                }
            }
            #endregion
            else
            {
                return null;
            }

            return table;

        }

        public static HtmlTable ConcatListDetalleCompra(DetalleCompra detalle, HtmlTable table, int compraId, bool closed)
        {

            if (table == null) // Es el primer elemento tengo q formar la tabla desde el principio
                return ListDetalleCompra(detalle.OrdenCompra.detalleCompra, compraId, closed); 
            HtmlTableRow r = new HtmlTableRow();
            HtmlTableCell delete = new HtmlTableCell();
            HtmlTableCell producto = new HtmlTableCell();
            HtmlTableCell cantidad = new HtmlTableCell();
            HtmlTableCell precioUnitario = new HtmlTableCell();
            HtmlTableCell precio = new HtmlTableCell();


            int i = table.Rows.Count;
               
                precio.BorderColor = producto.BorderColor = cantidad.BorderColor = precioUnitario.BorderColor = "#FFFFFF";
                if (i % 2 == 0)
                {
                    precio.BgColor = delete.BgColor = producto.BgColor = cantidad.BgColor = precioUnitario.BgColor = "#E0E9F5";
                }
                else
                {
                    precio.BgColor = delete.BgColor = producto.BgColor = cantidad.BgColor = precioUnitario.BgColor = "#D3D3D3";
                }

                producto.Controls.Add(new LiteralControl(detalle.Producto.Nombre));
                cantidad.Controls.Add(new LiteralControl(detalle.Cantidad.ToString()));
                precioUnitario.Controls.Add(new LiteralControl(detalle.Precio.ToString()));
                precio.Controls.Add(new LiteralControl((detalle.Precio * detalle.Cantidad).ToString()));

                HyperLink linkBorrar = new HyperLink();
                linkBorrar.Text = "Borrar";
                linkBorrar.NavigateUrl = "DetailsCompra.aspx?id=" + compraId + "&a=d&det=" + detalle.Id;
                delete.Controls.Add(linkBorrar);

                if (!closed)
                r.Cells.Add(delete);
                r.Cells.Add(producto);
                r.Cells.Add(cantidad);
                r.Cells.Add(precioUnitario);
                r.Cells.Add(precio);
                table.Rows.Add(r);

            return table;
            

        }

        public static DropDownList ListProveedores(IList<Proveedor> lProveedor, DropDownList list)
        {
            if(list==null)
                return null;
           
            list.Items.Clear();
            IList<Proveedor> all = ProveedorDao.getAllProveedor();

            // Para todos los productos que tengo registrado
            foreach (Proveedor proveedor in all){
                
                    list.Items.Add(new ListItem(proveedor.Nombre, proveedor.Id.ToString()));
            }





            return list;
        }

        public static DropDownList ListEmpleados(IList<Empleado> lEmpleado, DropDownList list)
        {
            if (list == null)
                return null;

            list.Items.Clear();
            IList<Empleado> all = EmpleadoDao.getAllEmpleado();

            // Para todos los productos que tengo registrado
            foreach (Empleado empleado in all)
            {
                list.Items.Add(new ListItem(empleado.Nombre+" "+empleado.Apellido, empleado.Id.ToString()));
            }

            return list;
        }

        public static HtmlTable ListDetalleCompra(ISet<DetalleCompra> compra, int compraId,bool closed)
        {
            if(compra==null)
                return null;
            HtmlTable table = new HtmlTable();
            HtmlTableRow r = new HtmlTableRow();
            HtmlTableCell delete = new HtmlTableCell();
            HtmlTableCell producto = new HtmlTableCell();
            HtmlTableCell cantidad = new HtmlTableCell();
            HtmlTableCell precioUnitario = new HtmlTableCell();
            HtmlTableCell precio = new HtmlTableCell();

            delete.BorderColor = producto.BorderColor = cantidad.BorderColor= 
                precio.BorderColor= precioUnitario.BorderColor = "#FFFFFF";
            producto.BgColor = delete.BgColor = cantidad.BgColor= 
                precio.BgColor= precioUnitario.BgColor = "#a9a9a9";

            if(!closed) // Si esta cerrada la compra no puedo borrar detalles
            delete.Controls.Add(new LiteralControl("      "));

            producto.Controls.Add(new LiteralControl("<b>Producto</b>"));
            cantidad.Controls.Add(new LiteralControl("<b>Cantidad</b>"));
            precioUnitario.Controls.Add(new LiteralControl("<b>Precio unidad</b>"));
            precio.Controls.Add(new LiteralControl("<b>Precio </b>"));

            if (!closed) // Si esta cerrada la compra no puedo borrar detalles
            r.Cells.Add(delete);
            r.Cells.Add(producto);
            r.Cells.Add(cantidad);
            r.Cells.Add(precioUnitario);
            r.Cells.Add(precio);
            table.Rows.Add(r);

            int i = 0;
            
            foreach (DetalleCompra detalleCompra in compra)
            {
                i++;
                r = new HtmlTableRow();
                producto = new HtmlTableCell();
                cantidad = new HtmlTableCell();
                precioUnitario = new HtmlTableCell();
                delete = new HtmlTableCell();
                precio = new HtmlTableCell();
                precio.BorderColor= producto.BorderColor = cantidad.BorderColor = precioUnitario.BorderColor = "#FFFFFF";
                if (i % 2 == 0)
                {
                    precio.BgColor=delete.BgColor = producto.BgColor = cantidad.BgColor = precioUnitario.BgColor = "#E0E9F5";
                }
                else
                {
                    precio.BgColor=delete.BgColor = producto.BgColor = cantidad.BgColor = precioUnitario.BgColor = "#D3D3D3";
                }

                producto.Controls.Add(new LiteralControl(detalleCompra.Producto.Nombre ));
                cantidad.Controls.Add(new LiteralControl(detalleCompra.Cantidad.ToString()));
                precioUnitario.Controls.Add(new LiteralControl(detalleCompra.Precio.ToString()));
                precio.Controls.Add(new LiteralControl(( detalleCompra.Precio*detalleCompra.Cantidad).ToString() ));

                HyperLink linkBorrar = new HyperLink();
                linkBorrar.Text = "Borrar";
                linkBorrar.NavigateUrl = "DetailsCompra.aspx?id=" + compraId + "&a=d&det=" + detalleCompra.Id;
                if (!closed) // Si esta cerrada la compra no puedo borrar detalles
                delete.Controls.Add(linkBorrar);
                
                if (!closed) // Si esta cerrada la compra no puedo borrar detalles
                r.Cells.Add(delete);

                r.Cells.Add(producto);
                r.Cells.Add(cantidad);
                r.Cells.Add(precioUnitario);
                r.Cells.Add(precio);
                table.Rows.Add(r);
            }

            return table;
        }
    }
}